package Modelo;

import java.io.Serializable;
import java.util.Date;

import org.hibernate.CallbackException;
import org.hibernate.Session;
import org.hibernate.classic.ValidationFailure;

//import com.proyecto.tropero.core.excepciones.BusinessException;
//import com.proyecto.tropero.gui.desktop.MDIBaseWindow;

public class ObjetoPersistente implements IObjetoPersistente {

	protected Object id;
	protected String estado;
	protected Date fechaModificacion;
	protected Date fechaCreacion;
	protected Integer idUsuarioCreacion;
	protected Integer idUsuarioModificacion;
	//TODO Descomentar esto cuando agreguemos la sincro...ver si hace falta tocar el hash e equeals para agregar este campo
//	protected Integer idCampo;
//	
//	public Integer getIdCampo() {
//		return idCampo;
//	}
//
//
//	public void setIdCampo(Integer idCampo) {
//		this.idCampo = idCampo;
//	}


	@Override
	public void validate() throws ValidationFailure {
		// TODO Auto-generated method stub
		
	}


	@Override
	public boolean onDelete(Session arg0) throws CallbackException {
		// TODO Auto-generated method stub
		return false;
	}


	@Override
	public void onLoad(Session arg0, Serializable arg1) {
		// TODO Auto-generated method stub
		
	}


//	@Override
//	public boolean onSave(Session arg0) throws CallbackException {
//		this.setFechaCreacion(new Date());
//		this.setIdUsuarioCreacion(MDIBaseWindow.getUsuario().getId());
//		this.setEstado("A");
//		return false;
//	}

	@Override
	public boolean onSave(Session arg0) throws CallbackException {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean onUpdate(Session arg0) throws CallbackException {
		this.setFechaModificacion(new Date());
//		this.setIdUsuarioModificacion(MDIBaseWindow.getUsuario().getId());
		return false;
	}


	public String getEstado() {
		return estado;
	}


	public void setEstado(String estado) {
		this.estado = estado;
	}


	public Date getFechaModificacion() {
		return fechaModificacion;
	}


	public void setFechaModificacion(Date fechaModificacion) {
		this.fechaModificacion = fechaModificacion;
	}


	public Date getFechaCreacion() {
		return fechaCreacion;
	}


	public void setFechaCreacion(Date fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}


	public Integer getIdUsuarioCreacion() {
		return idUsuarioCreacion;
	}


	public void setIdUsuarioCreacion(Integer idUsuarioCreacion) {
		this.idUsuarioCreacion = idUsuarioCreacion;
	}


	public Integer getIdUsuarioModificacion() {
		return idUsuarioModificacion;
	}


	public void setIdUsuarioModificacion(Integer idUsuarioModificacion) {
		this.idUsuarioModificacion = idUsuarioModificacion;
	}


	public boolean equals(Object o) {
        if ( this == o ) {
            return true;
        }
        if ( !(o instanceof ObjetoPersistente) ) {
            return false;
        }
        ObjetoPersistente objeto = (ObjetoPersistente)o;
        if ( this.getId() != null ? !this.getId().equals(objeto.getId()) : this.getId() != null ) {
            return false;
        }

        return true;
    }


//    public int hashCode() {
//        if (this.getId() != null )
//        	return this.getId().hashCode();
//        else
//        	throw new BusinessException("el objeto no pose Id");
//    }

	public Object getId() {
		return id;
	}

	public void setId(Object id) {
		this.id = id;
	}


	
    
    
}
